1. Field of Art
The disclosure generally relates to the field of Web Service orchestration, and more specifically to, Business Process Execution Language (BPEL) for Web Service orchestration and its extensibility and scalability.
2. Description of the Related Art
Web Services, software systems designed to support interoperable machine to machine interaction over a network, have become an increasingly accepted mechanism of providing functionality across increasingly heterogeneous business systems and environments. Existing standards, such as the Web Service Description Language (WSDL) established by the World Wide Web Consortium (W3C), provide mechanisms of describing the interface of a Web Service. Standards also describe the protocol used to communicate between services and clients, including content of transport messages, such as Simple Object Access Protocol (SOAP) and Hypertext Transfer Protocol (HTTP).
The Business Process Execution Language (BPEL) has emerged as one of the leading standards in the area of web service orchestration. BPEL is an XML based language for defining an executable process composed of web service operations. BPEL has many traditional programming constructs, such as variables and conditionals, as well as constructs for interacting with Web Services, such as receives, invokes, and WSDL message variable types. BPEL builds upon these constructs to allow complex correlation and compensation semantics that are invaluable when orchestrating Web Services. With BPEL, users can compose existing Web Services to implement new, more complex Web Services.
Although BPEL is well suited for sophisticated Web Service orchestration, it lacks the necessary constructs and libraries to directly implement complex business logic. The BPEL specification does not provide the capability to implement methods and code libraries, but rather relies on externally defined and managed Web Service implementations.
A typical BPEL use case requires some new custom business logic in addition to the Web Services being orchestrated. Many BPEL vendors address this need by providing their own mechanism to extend BPEL via custom code extensions (such as JAVA). However, the use of extensibility mechanisms introduces other problems in and of itself. These code extensions must be co-located on the same physical computer as the BPEL processing engine executing the process definition. As a result they compete for resources (such as memory, CPU cycles or network bandwidth) with each other and with the BPEL processing engine itself. Further, BPEL is designed to orchestrate Web Service requests from a centralized location. It is extremely difficult for a single BPEL process instance to, itself, be distributed across multiple computer systems.